﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Dev01.Controller;
using Dev01.BussinessObject;

namespace Dev01
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //Biến kiểm tra xem chọn Thêm hay Sửa
        private int kt = 0;

        GoodsCtr goodsCtrl = new GoodsCtr();
        NhanVienCtrl nhanvienCtrl = new NhanVienCtrl();

        private void Form1_Load(object sender, EventArgs e)
        {
            Enable(true);

            nhanvienCtrl.HienThiCombobox(cmbNhanVien);
            new NhanVienCtrl().HienThiDataGridViewCombobox(MaNV);
            goodsCtrl.Load(dgGoods, binGoods, txtMaHH, txtTenHH, dtpNgayNhap, nurSoLuong, nurGiaNhap, nurGiaBan, cmbNhanVien, txtTinhTrang, txtGhiChu);
        }

        //Không cho thao tác với các control
        private void Enable(bool b)
        {
            txtMaHH.Enabled = !b;
            txtTenHH.Enabled = !b;
            dtpNgayNhap.Enabled = !b;
            nurSoLuong.Enabled = !b;
            nurGiaNhap.Enabled = !b;
            nurGiaBan.Enabled = !b;
            cmbNhanVien.Enabled = !b;
            txtTinhTrang.Enabled = !b;
            txtGhiChu.Enabled = !b;
            btnLuu.Enabled = !b;
            dgGoods.Enabled = b;
            toolThem.Enabled = b;
            toolSua.Enabled = b;
            toolXoa.Enabled = b;
            binGoods.Enabled = b;
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void toolSua_Click(object sender, EventArgs e)
        {
            kt = 2;

            Enable(false);
            //Không cho sửa Mã HH
            txtMaHH.Enabled = false;
            //Di chuyển con trỏ đến txtTenHH
            txtTenHH.Focus();
        }

        private void toolXoa_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Bạn chắc chắn muốn xóa sản phẩm này?","Goods",MessageBoxButtons.YesNo,MessageBoxIcon.Question) == DialogResult.Yes)
            {
                goodsCtrl.Xoa(txtMaHH.Text);
                btnLoad_Click(sender, e);
            }
        }

        private void btnLoad_Click(object sender, EventArgs e)
        {
            Form1_Load(sender, e);
        }

        //Gán giá trị cho GoodsInfo để thực hiện thêm hoặc sửa
        private GoodsInfo GetThongTin()
        {
            GoodsInfo g = new GoodsInfo();
            g.Ma = txtMaHH.Text;
            g.Ten = txtTenHH.Text;
            g.NgayNhap = dtpNgayNhap.Value;
            g.SoLuong = Convert.ToInt32(nurSoLuong.Value.ToString());
            g.GiaNhap = Convert.ToDouble(nurGiaNhap.Value.ToString());
            g.GiaBan = Convert.ToDouble(nurGiaBan.Value.ToString());
            g.MaNV = cmbNhanVien.SelectedValue.ToString();
            g.TinhTrang = int.Parse(txtTinhTrang.Text);
            g.GhiChu = txtGhiChu.Text;
            return g;
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (kt == 1)
            {
                if (KiemTraTruocKhiLuu())
                {
                    GoodsInfo g = GetThongTin();
                    goodsCtrl.Them(g);
                    btnLoad_Click(sender, e);
                }
            }
            else if (kt == 2)
            {
                if (KiemTraTruocKhiLuu())
                {
                    GoodsInfo g = GetThongTin();
                    goodsCtrl.Sua(g);
                    btnLoad_Click(sender, e);
                }
            }
        }

        #region Kiểm tra Trước khi LƯU
        private bool KiemTraTruocKhiLuu()
        {
            if (txtMaHH.Text.Trim() == "" )
            {
                MessageBox.Show("Vui lòng nhập Mã Hàng Hóa!", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtMaHH.Focus();
                return false; 
            }
            else if (txtTenHH.Text.Trim() == "")
            {
                MessageBox.Show("Vui lòng nhập Tên Hàng Hóa!", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtTenHH.Focus();
                return false;
            }
            else if (nurSoLuong.Value <= 0)
            {
                MessageBox.Show("Số lượng phải lớn hơn 0!", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                nurSoLuong.Focus();
                return false;
            }
            else if (nurGiaNhap.Value <= 0)
            {
                MessageBox.Show("Giá nhập phải lớn hơn 0!", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                nurGiaNhap.Focus();
                return false;
            }
            else if (nurGiaBan.Value <= 0)
            {
                MessageBox.Show("Giá bán phải lớn hơn 0!", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                nurGiaBan.Focus();
                return false;
            }
            else if (Convert.ToDouble(nurGiaBan.Value.ToString()) <= Convert.ToDouble(nurGiaNhap.Value.ToString()))
            {
                MessageBox.Show("Giá bán phải lớn hơn giá nhập!", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                nurGiaBan.Focus();
                return false;
            }
            else if (cmbNhanVien.Text == "" || cmbNhanVien.Text == "---Chọn---")
            {
                MessageBox.Show("Vui lòng chọn nhân viên!", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                cmbNhanVien.Focus();
                return false;
            }
            else if (txtTinhTrang.Text.Trim() == "")
            {
                MessageBox.Show("Vui lòng nhập tình trạng!", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtTinhTrang.Focus();
                return false;
            }
            else
                return true;
        }
        #endregion

        private void toolThem_Click(object sender, EventArgs e)
        {
            kt = 1;

            Enable(false);
            txtMaHH.Text = new Utilities().KeTiep(goodsCtrl.Load(),"HH000","HH");
            txtTenHH.Text = "";
            dtpNgayNhap.Value = DateTime.Today;
            nurSoLuong.Value = 0;
            nurGiaNhap.Value = 0;
            nurGiaBan.Value = 0;
            //cmbNhanVien.SelectedIndex = 1;
            txtTinhTrang.Text = "";
            txtGhiChu.Text = "";
            txtTenHH.Focus();
        }

        private void dgGoods_DataError(object sender, DataGridViewDataErrorEventArgs e)
        {
            e.Cancel = true;
        }

        private void txtTinhTrang_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }
    }
}
